草庐IT

c++ - std::byte 的用例

全部标签

c# - 如何制作从 C# "Thread-safe"调用的 C (P/invoke) 代码

我有一些使用单个全局变量的简单C代码。显然这不是线程安全的,所以当我在C#中使用P/invoke从多个线程调用它时,事情就搞砸了。如何为每个线程单独导入此函数,或使其成为线程安全的?我尝试声明变量__declspec(thread),但这导致程序崩溃。我还尝试制作一个C++/CLI类,但它不允许成员函数是__declspec(naked),我需要(我正在使用内联汇编)。我在编写多线程C++代码方面经验不足,因此可能缺少某些内容。下面是一些示例代码:C#[DllImport("MyDll.dll",CallingConvention=CallingConvention.Cdecl)]pu

c# - 随机整数中最可能的位

我做过这样的实验——用C和C#制作了1000万个随机数。然后统计随机整数中15位中的每一位被设置了多少次。(我选择15位是因为C只支持最大0x7fff的随机整数)。我得到的是:我有两个问题:为什么有3个最可能的位?在C情况下,位8,10,12是最有可能的。和C#位6,8,11最有可能。与C#最可能位相比,C#最可能位也似乎大部分移动了2个位置。为什么是这样?因为C#使用其他RAND_MAX常量还是什么?我的C测试代码:voidaccumulateResults(intrandom,intbitSet[15]){inti;intisBitSet;for(i=0;iC#的测试代码:stat

c# - C DLL 中的 PInvoke char* 在 C# 中处理为字符串。空字符问题

CDLL中的函数如下所示:intmy_Funct(char*input,char*output);我必须从C#应用程序调用它。我通过以下方式执行此操作:...DllImportstuff...publicstaticexternintmy_Funct(stringinput,stringoutput);输入字符串完美地传输到DLL(我有可见的证据)。该函数填写的输出虽然是错误的。我有hexa数据,比如:3F-D9-00-01但不幸的是,两个零之后的所有内容都被截断了,只有前两个字节进入了我的C#应用程序。它发生了,因为(我猜)它被视为空字符并将其作为字符串的结尾。知道如何摆脱它吗?我试

c# - IIS 7.x,添加启用 HTTPS 的站点 : SiteCollection. Add(string, string, string, byte[]) 重载

我需要以编程方式添加一个IIS7.x站点,但在默认情况下应使用HTTPS/SSL绑定(bind)创建该站点时,我卡住了,使用SiteCollection.Add(string,string,string,byte[])overload.将https:*:80:test.localhosthttps:*:443:test.localhost作为bindingInformation抛出ArgumentException并显示以下消息:指定的HTTPS绑定(bind)无效。这个绑定(bind)信息有什么问题?谢谢。编辑:我正在使用Microsoft.Web.Administration程序集

C# - 将 uint 转换为 byte[]

所以我使用BitConverter.GetBytes()将uint32转换为byte[],但我在数组中的顺序似乎是倒过来的。http://msdn.microsoft.com/en-us/library/1184xdy4.aspx(显示它的byte[]似乎是小端)。有没有比使用linq反转字节数组更好的方法来处理这个问题? 最佳答案 Array.Reverse改变字节顺序。 关于C#-将uint转换为byte[],我们在StackOverflow上找到一个类似的问题:

c# - 如何将 byte[] 转换为不带编码且不丢失数据的 String

我有一个字节数组。每个字节的8位值就是我想要的字符串中的字符。您可以将我的8位值视为ASCII、ANSI、UTF-8、ISO-8859-1、每日温度读数、与直线上一点的距离(以英寸为单位)或任何您想要的值。这无关紧要。当我完成时。我的字符串中第N位的字符应该和第N位的字节有相同的值,即高8位应该是0,低8位应该和源字节一样。我使用什么编码将字节简单地映射到字符而不做任何更改? 最佳答案 对于这个需求,我会省去编码,因为我不知道他们做什么的细节,只是自己转换字节。stringConvert(byte[]data){char[]char

c# - 如何在 C# 中将 byte[] 转换为日期时间?

我在数据库中有一个TimeStamp类型的字段,它在c#代码中的byte[]中进行了转换,我需要将其转换为DateTime值。所以我想将字节数组转换为DateTime。已使用此代码:byte[]byteValue=someValue;longlongVar=BitConverter.ToInt64(byteValue);DateTimedateTimeVar=DateTime.FromBinary(longVar);这样可以吗? 最佳答案 SQLServer中的时间戳列(现在称为rowversion)不可转换为日期时间值-它纯粹是服

c# - .NET 中 byte 与 int 的性能

在.NET之前的世界里,我总是假设int比byte快,因为这是处理器的工作方式。现在重要的是使用int的习惯,即使字节可以工作,例如当字节是存储在数据库中的内容时问题:.NET如何从性能/内存的角度处理字节类型和int。更新:感谢您的输入。不幸的是,没有人真正回答这个问题。.NET如何处理字节与整数。如果性能没有差异,那么我喜欢chills42的说法:用于算术的int二进制字节我将继续这样做。 最佳答案 你的.NET之前的假设是错误的——一直有很多计算机系统围绕着它,虽然名义上是“字节可寻址的”,但必须通过读取一个完整的单词来设置一

c# - 错误 (HttpWebRequest) : Bytes to be written to the stream exceed the Content-Length bytes size specified

我似乎无法弄清楚为什么我不断收到以下错误:BytestobewrittentothestreamexceedtheContent-Lengthbytessizespecified.在以下行:writeStream.Write(bytes,0,bytes.Length);这是一个Windows窗体项目。如果有人知道这里发生了什么,我肯定会欠你一个。privatevoidPost(){HttpWebRequestrequest=null;Uriuri=newUri("xxxxx");request=(HttpWebRequest)WebRequest.Create(uri);request

c# - 连接 byte[] 的 C# 列表

我正在创建多个字节数组,这些字节数组需要连接在一起以创建一个大字节数组-我根本不想使用byte[],但在这里别无选择...我在创建它们时将它们添加到列表中,因此我只需要在拥有所有字节[]后进行连接,但我的问题是,实际执行此操作的最佳方法是什么?当我有一个包含未知数量的byte[]的列表并且我想将它们全部连接在一起时。谢谢。 最佳答案 listOfByteArrs.SelectMany(byteArr=>byteArr).ToArray()上面的代码会将一系列字节序列连接成一个序列-并将结果存储在一个数组中。虽然可读,但这并不是最有效